/*
 * p11210.cpp
 *
 *  Created on: 2013-10-24
 *      Author: zy
 */
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<string>
#include<vector>
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<algorithm>
using namespace std;
//麻将数组
const char* mahjong[] =
{ "1m", "2m", "3m", "4m", "5m", "6m", "7m", "8m", "9m", "1s", "2s", "3s", "4s",
		"5s", "6s", "7s", "8s", "9s", "1p", "2p", "3p", "4p", "5p", "6p", "7p",
		"8p", "9p", "1c", "2c", "3c", "4c", "5c", "6c", "7c" };
int c[34];
int mj[15];
int convert(char* s)
{
	for (int i = 0; i < 34; i++)
		if (strcmp(s, mahjong[i]) == 0)
			return i;
	return -1;
}

bool sep1()//Chii Toitsu
{
	for (int i = 0; i < 34; i++)
		if (c[i] != 0 && c[i] != 2)
			return false;
	return true;
}
bool sep2()//Kokushi Muso
{
	if (c[0] == 0 || c[8] == 0 || c[9] == 0 || c[17] == 0 || c[18] == 0
			|| c[26] == 0)
		return false;
	for (int i = 27; i < 34; i++)
		if (c[i] == 0)
			return false;
	if (c[0] == 2 || c[8] == 2 || c[9] == 2 || c[17] == 2 || c[18] == 2
			|| c[26] == 2)
		return true;
	for (int i = 27; i < 34; i++)
		if (c[i] == 2)
			return true;
	return false;
}
bool dfs(int id, int k1, int k2)//idx:0-34 ,k1:已有的eye,k2：已有的对子
{
	if (k1 == 1 && k2 == 4)
		return true;
	if (c[id] == 0)
		return dfs(id + 1, k1, k2);
	bool flag;
	if (c[id] >= 3)
	{
		c[id] -= 3;
		flag = dfs(id, k1, k2 + 1);
		c[id] += 3;
		if (flag)
			return true;
	}
	if (c[id] >= 2 && !k1)
	{
		c[id] -= 2;
		flag = dfs(id, k1 + 1, k2);
		c[id] += 2;
		if (flag)
			return true;
	}
	if (id % 9 < 7 && id < 27 && c[id + 1] && c[id + 2])
	{
		c[id]--;
		c[id + 1]--;
		c[id + 2]--;
		flag = dfs(id, k1, k2 + 1);
		c[id]++;
		c[id + 1]++;
		c[id + 2]++;
		if (flag)
			return true;
	}
	return false;
}
bool check()
{
	if (sep1() || sep2())
		return true;
	if (dfs(0, 0, 0))
		return true;
	return false;
}
int main()
{
	int T;
	scanf("%d", &T);
	char s[4];
	int ans[35], cnt;
	while (T--)
	{
		for (int i = 0; i < 13; i++)
		{
			scanf("%s", s);
			mj[i] = convert(s);
		}
		cnt = 0;
		memset(c, 0, sizeof(c));
		for (int i = 0; i < 13; i++)
			c[mj[i]]++;
		for (int i = 0; i < 34; i++)
		{
			if (c[i] == 4)
				continue;
			c[i]++;
			if (check())
			{
				cnt++;
				ans[cnt] = i;
			}
			c[i]--;
		}
		if (cnt == 0)
			puts("Nooten");
		else
		{
			printf("%d", cnt);
			for (int i = 1; i <= cnt; i++)
				printf(" %s", mahjong[ans[i]]);
			puts("");

		}

	}
}

